<?php
//FIXME dar de alta todas las prestaciones, las sin importe con NULL y cambiar el filtro de turnos y cirugias para que no traiga las NULL.
//FIXME en la tabla nomenclador en la columna importe poner default NULL
class class_nomenclador
{
	private $_db; 
	function __construct()
	{
		$this->config();
	}
	private function config()
	{
		require_once("conexion.php");
		require_once("DataBase.php");
		$this->_db = new DataBase($SERVIDOR,$USUARIO,$PASSWORD,$BASE);
		mysql_query("SET NAMES utf8");
	}
	
	function method_getObrasSociales($params, $error) {
		$this->_db->setQuery("(
			SELECT '0' as value, 'PARTICULARES' as label) 
			UNION (
					SELECT cod_obra_social as value, descripcion as label 
					FROM obras_sociales
					ORDER BY descripcion
					)
			");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }

		return $this->_db->loadResult();
	}
	
	function method_getPlanes($params, $error) {
		$this->_db->setQuery("
			SELECT cod_plan as value, descripcion as label 
			FROM planes 
			WHERE cod_obra_social = '" . $params[0]->cod_obra_social . "'
			ORDER BY descripcion
			");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }

		return $this->_db->loadResult();
	}
	
	function method_getNomenclador($params, $error) {
		$this->_db->setQuery("
			SELECT cod_prestacion, importe, codigo 
			FROM nomenclador 
			WHERE cod_plan = '" . $params[0]->cod_plan . "'
			");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }

		return $this->_db->loadResult();
	}
	
	function method_setNomenclador($params, $error) {
		mysql_query("START TRANSACTION");
		$SQL = "";
		FOREACH($params[0]->prestaciones as $prestacion)
		{
			$this->_db->setQuery("
			SELECT COUNT(cod_nomenclador) as rows 
			FROM nomenclador 
			WHERE cod_plan = '" . $params[0]->cod_plan . "' 
			AND cod_prestacion = '" . $prestacion->cod_prestacion . "'
			");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); mysql_query("ROLLBACK"); return $error; }
			$rows = $this->_db->loadResult();
			
			IF ($rows[0]->rows == 0)
			{
				if ($prestacion->importe == "")
				{
					$SQL = "
					INSERT INTO nomenclador 
						(cod_plan,
						cod_prestacion,
						importe,
						codigo) 
					VALUES
						('" . $params[0]->cod_plan . "',
						'" . $prestacion->cod_prestacion . "',
						NULL,
						'" . $prestacion->codigo . "')
					";
				}
				else
				{
					$SQL = "
					INSERT INTO nomenclador 
						(cod_plan,
						cod_prestacion,
						importe,
						codigo) 
					VALUES
						('" . $params[0]->cod_plan . "',
						'" . $prestacion->cod_prestacion . "',
						'" . $prestacion->importe . "',
						'" . $prestacion->codigo . "')
					";
				}
				$this->_db->setQuery($SQL);
			}
			ELSE
			{
				IF ($prestacion->importe == "")
				{
					$SQL = "
					UPDATE nomenclador
					SET importe = NULL,
					codigo = '" . $prestacion->codigo . "'
					WHERE cod_plan = '" . $params[0]->cod_plan . "' 
					AND cod_prestacion = '" . $prestacion->cod_prestacion . "'
					LIMIT 1
					";
				}
				ELSE
				{
					$SQL = "
					UPDATE nomenclador
					SET importe = '" . $prestacion->importe . "',
					codigo = '" . $prestacion->codigo . "'
					WHERE cod_plan = '" . $params[0]->cod_plan . "' 
					AND cod_prestacion = '" . $prestacion->cod_prestacion . "'
					LIMIT 1
					";
				}
				$this->_db->setQuery($SQL);
			}
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); mysql_query("ROLLBACK"); return $error; }
		}
		mysql_query("COMMIT");
		return true;
	}
	
	function method_copiar_pm($params, $error) {
		$this->_db->setQuery("
		SELECT * FROM prestaciones
		WHERE cod_prestacion = '" . $params[0]->cod_prestacion . "'
		LIMIT 1
		");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		$reg = $this->_db->loadResult();
		
		$this->_db->setQuery("
		INSERT INTO prestaciones VALUES 
		(NULL,
		'" . $reg[0]->cod_prestacion_rubro . "',
		'" . $reg[0]->descripcion . " - PM',
		'" . $reg[0]->orden . "',
		'S'
		)");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
	}
	
	function method_getPrestaciones($params, $error) {
		if ($params[0]->cod_plan == "0") {
			$this->_db->setQuery("
				SELECT prestaciones.cod_prestacion, 
				prestaciones.descripcion AS prestacion, 
				prestaciones_rubros.descripcion AS rubro, 
				nomenclador.importe, nomenclador.codigo, 
				DATE_FORMAT(nomenclador.fecha_modificacion,'%d/%m/%Y') AS fecha_modificacion
				FROM prestaciones 
				INNER JOIN prestaciones_rubros ON prestaciones.cod_prestacion_rubro = prestaciones_rubros.cod_prestacion_rubro 
				LEFT JOIN nomenclador ON prestaciones.cod_prestacion = nomenclador.cod_prestacion 
				AND nomenclador.cod_plan = '" . $params[0]->cod_plan . "'
				ORDER BY prestaciones_rubros.descripcion, prestaciones.descripcion
				");
		} else {
			$this->_db->setQuery("
				SELECT prestaciones.cod_prestacion, 
				prestaciones.descripcion AS prestacion, 
				prestaciones_rubros.descripcion AS rubro, 
				nomenclador.importe, nomenclador.codigo, 
				DATE_FORMAT(nomenclador.fecha_modificacion,'%d/%m/%Y') AS fecha_modificacion
				FROM prestaciones 
				INNER JOIN prestaciones_rubros ON prestaciones.cod_prestacion_rubro = prestaciones_rubros.cod_prestacion_rubro 
				LEFT JOIN nomenclador ON prestaciones.cod_prestacion = nomenclador.cod_prestacion 
				AND nomenclador.cod_plan = '" . $params[0]->cod_plan . "'
				WHERE prestaciones.pm = 'N'
				ORDER BY prestaciones_rubros.descripcion, prestaciones.descripcion
				");
		}
//		$this->_db->setQuery("SELECT cod_prestacion, prestaciones.descripcion as prestacion, prestaciones_rubros.descripcion as rubro FROM prestaciones INNER JOIN prestaciones_rubros ON prestaciones.cod_prestacion_rubro = prestaciones_rubros.cod_prestacion_rubro");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }

		$result = array();
		$regs = $this->_db->loadResult();
    	FOREACH ($regs as $reg)
		{
			$row = array();
			array_push($row, $reg->cod_prestacion);
			array_push($row, $reg->prestacion);
			array_push($row, $reg->rubro);
			array_push($row, $reg->importe);
			array_push($row, $reg->codigo);
			array_push($row, $reg->fecha_modificacion);
			array_push($result, $row);
		}
		return $result;
    }
}